package com.cn.wanxi.model;

/**
 * 调用当前类，不需要别人来创建对象，这个对象之创建一次即可
 * 所以，我们这里会涉及到一个设计模式，就做单例模式
 * 单例模式，两个条件
 * 1.私有的构造方法，
 * 2.私有的变量
 */
public class ResultModel {
    private Integer code;//编码 0 成功，1，失败，2超时
    private String msg;//消息
    private Integer count;//影响的条数
    private Object data;//数据

    private static ResultModel resultModel = new ResultModel();

    private ResultModel() {
    }

    //    static {
//        getInstance();
//    }
//
    private static ResultModel getInstance(int count, String msg, int code, Object data) {
        resultModel.setCount(count);
        resultModel.setMsg(msg);
        resultModel.setCode(code);
        resultModel.setData(data);
        return resultModel;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    /**
     * 现在调用下面的几个方法getResultModel是不正确的，因为第一次调用
     * 会对 resultModel进行赋值 ，如果第一次调用setcount，第二次调用setdata
     * name第二次的 resultModel里面也有count的值，
     * 所以，我们应该每次调用都应该从新对所有属性进行赋值
     */
    /**
     * 修改，新增，删除 返回影响的条数
     *
     * @param count
     * @return
     */
    public static ResultModel getResultModel(int count) {
//        ResultModel resultModel = new ResultModel();
//        resultModel.setCount(count);
//        resultModel.setMsg("");
//        resultModel.setCode(0);
//        resultModel.setData(null);
//        return resultModel;
        return getInstance(count, "", 0, null);
    }

    /**
     * 根据id查询得到一个对象
     *
     * @param data
     * @return
     */
    public static ResultModel getResultModel(Object data) {
//        ResultModel resultModel = new ResultModel();
//        resultModel.setCount(0);
//        resultModel.setMsg("");
//        resultModel.setCode(0);
//        resultModel.setData(data);
//        return resultModel;
        return getInstance(0, "", 0, data);
    }

    /**
     * 返回msg
     * @param msg
     * @return
     */
    public static ResultModel getResultModel(String msg) {
//        ResultModel resultModel = new ResultModel();
//        resultModel.setCount(0);
//        resultModel.setMsg(msg);
//        resultModel.setCode(0);
//        resultModel.setData(null);
//        return resultModel;
        return getInstance(0, msg, 0, null);
    }

    /**
     * 用于查询所有
     * @param data
     * @param count
     * @return
     */
    public static ResultModel getResultModel(Object data, int count) {
//        ResultModel resultModel = new ResultModel();
//        resultModel.setData(data);
//        resultModel.setCount(count);
//        resultModel.setCode(0);
//        resultModel.setMsg("");
//        return resultModel;
        return getInstance(count, "", 0, data);
    }
}
